Skip to content

remove async storage from graphql #5966

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

wconti27
Copy link
Contributor

What does this PR do?

Motivation

Plugin Checklist

Additional Notes

@wconti27 wconti27 requested review from a team as code owners June 26, 2025 19:54
@wconti27 wconti27 self-assigned this Jun 26, 2025
Copy link

github-actions bot commented Jun 26, 2025

Overall package size

Self size: 9.69 MB
Deduped: 109.27 MB
No deduping: 109.65 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.0.1 | 20.3 MB | 20.3 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.9.0 | 9.77 MB | 10.14 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.2 | 122.36 kB | 850.93 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Jun 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.82%. Comparing base (2244cf0) to head (5b86f73).
Report is 29 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5966      +/-   ##
==========================================
+ Coverage   81.98%   82.82%   +0.84%     
==========================================
  Files         475      476       +1     
  Lines       19598    19684      +86     
==========================================
+ Hits        16067    16304     +237     
+ Misses       3531     3380     -151     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-datadog-prod-us1
Copy link

Datadog Report

Branch report: conti/remove-async-storage-graphql
Commit report: d065140
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1257 Passed, 0 Skipped, 20m 16.99s Total Time

@pr-commenter
Copy link

pr-commenter bot commented Jun 26, 2025

Benchmarks

Benchmark execution time: 2025-07-21 21:34:16

Comparing candidate commit 5b86f73 in PR branch conti/remove-async-storage-graphql with baseline commit 2244cf0 in branch master.

Found 48 performance improvements and 0 performance regressions! Performance is the same for 1224 metrics, 51 unstable metrics.

scenario:plugin-graphql-with-depth-and-collapse-off-18

  • 🟩 cpu_user_time [-270.413ms; -230.436ms] or [-15.201%; -12.954%]
  • 🟩 execution_time [-293.358ms; -249.705ms] or [-15.153%; -12.898%]
  • 🟩 instructions [-517.1M instructions; -484.6M instructions] or [-12.987%; -12.171%]
  • 🟩 max_rss_usage [-17.481MB; -16.667MB] or [-10.801%; -10.298%]

scenario:plugin-graphql-with-depth-and-collapse-off-20

  • 🟩 cpu_user_time [-482.180ms; -436.883ms] or [-25.262%; -22.889%]
  • 🟩 execution_time [-552.235ms; -502.833ms] or [-26.198%; -23.854%]
  • 🟩 instructions [-1.4G instructions; -1.3G instructions] or [-30.618%; -29.753%]
  • 🟩 max_rss_usage [-58.888MB; -56.089MB] or [-28.351%; -27.004%]

scenario:plugin-graphql-with-depth-and-collapse-off-22

  • 🟩 cpu_user_time [-707.018ms; -664.654ms] or [-36.716%; -34.516%]
  • 🟩 execution_time [-785.714ms; -738.453ms] or [-35.511%; -33.375%]
  • 🟩 instructions [-1.9G instructions; -1.9G instructions] or [-37.380%; -36.593%]
  • 🟩 max_rss_usage [-74.258MB; -73.373MB] or [-32.623%; -32.235%]

scenario:plugin-graphql-with-depth-and-collapse-on-18

  • 🟩 cpu_user_time [-126.691ms; -105.800ms] or [-11.688%; -9.760%]
  • 🟩 execution_time [-134.490ms; -115.740ms] or [-11.194%; -9.633%]
  • 🟩 instructions [-342.2M instructions; -320.5M instructions] or [-14.498%; -13.579%]
  • 🟩 max_rss_usage [-8.077MB; -7.509MB] or [-6.354%; -5.907%]

scenario:plugin-graphql-with-depth-and-collapse-on-20

  • 🟩 cpu_user_time [-518.415ms; -496.088ms] or [-36.727%; -35.145%]
  • 🟩 execution_time [-555.881ms; -533.966ms] or [-35.759%; -34.350%]
  • 🟩 instructions [-1.4G instructions; -1.3G instructions] or [-42.639%; -41.810%]
  • 🟩 max_rss_usage [-57.377MB; -56.826MB] or [-33.133%; -32.815%]

scenario:plugin-graphql-with-depth-and-collapse-on-22

  • 🟩 cpu_user_time [-695.480ms; -672.828ms] or [-47.987%; -46.424%]
  • 🟩 execution_time [-771.821ms; -749.121ms] or [-45.162%; -43.834%]
  • 🟩 instructions [-1.9G instructions; -1.8G instructions] or [-47.332%; -46.505%]
  • 🟩 max_rss_usage [-69.405MB; -68.575MB] or [-36.316%; -35.882%]

scenario:plugin-graphql-with-depth-off-18

  • 🟩 cpu_user_time [-110.037ms; -88.886ms] or [-10.053%; -8.121%]
  • 🟩 execution_time [-114.898ms; -95.304ms] or [-9.508%; -7.886%]
  • 🟩 instructions [-353.2M instructions; -332.5M instructions] or [-14.535%; -13.685%]
  • 🟩 max_rss_usage [-10.858MB; -10.382MB] or [-8.322%; -7.957%]

scenario:plugin-graphql-with-depth-off-20

  • 🟩 cpu_user_time [-509.923ms; -487.170ms] or [-35.837%; -34.238%]
  • 🟩 execution_time [-550.508ms; -527.246ms] or [-35.171%; -33.685%]
  • 🟩 instructions [-1.3G instructions; -1.3G instructions] or [-41.717%; -41.013%]
  • 🟩 max_rss_usage [-58.455MB; -57.386MB] or [-33.355%; -32.745%]

scenario:plugin-graphql-with-depth-off-22

  • 🟩 cpu_user_time [-676.387ms; -654.360ms] or [-46.237%; -44.731%]
  • 🟩 execution_time [-748.792ms; -725.665ms] or [-43.509%; -42.165%]
  • 🟩 instructions [-1.8G instructions; -1.8G instructions] or [-46.175%; -45.468%]
  • 🟩 max_rss_usage [-68.357MB; -67.643MB] or [-35.676%; -35.303%]

scenario:plugin-graphql-with-depth-on-max-18

  • 🟩 cpu_user_time [-129.773ms; -115.114ms] or [-11.957%; -10.607%]
  • 🟩 execution_time [-134.755ms; -118.321ms] or [-11.225%; -9.856%]
  • 🟩 instructions [-336.7M instructions; -314.4M instructions] or [-14.250%; -13.308%]
  • 🟩 max_rss_usage [-8.210MB; -7.644MB] or [-6.455%; -6.010%]

scenario:plugin-graphql-with-depth-on-max-20

  • 🟩 cpu_user_time [-520.804ms; -499.548ms] or [-36.866%; -35.361%]
  • 🟩 execution_time [-557.685ms; -537.334ms] or [-35.887%; -34.578%]
  • 🟩 instructions [-1.4G instructions; -1.3G instructions] or [-42.516%; -41.564%]
  • 🟩 max_rss_usage [-57.278MB; -56.733MB] or [-33.093%; -32.779%]

scenario:plugin-graphql-with-depth-on-max-22

  • 🟩 cpu_user_time [-697.538ms; -676.376ms] or [-48.153%; -46.692%]
  • 🟩 execution_time [-769.664ms; -747.968ms] or [-45.249%; -43.973%]
  • 🟩 instructions [-1.9G instructions; -1.8G instructions] or [-47.230%; -46.532%]
  • 🟩 max_rss_usage [-68.950MB; -68.194MB] or [-36.129%; -35.733%]

@wconti27 wconti27 requested a review from rochdev July 14, 2025 19:12
@BridgeAR BridgeAR marked this pull request as draft July 15, 2025 14:49
@wconti27 wconti27 marked this pull request as ready for review July 21, 2025 18:52
@wconti27 wconti27 requested a review from a team as a code owner July 21, 2025 18:52
Copy link
Member

@rochdev rochdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits/questions but the code LGTM, it actually simplifies things a lot which is great!

I think now that AsyncResource is gone it will even be possible to refactor this integration to be even simpler in the future 👍

fields: {},
abortController: new AbortController()
}
return startExecuteCh.runStores(ctx, () => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous code would skip this channel if contexts container contextValue to avoid double patching. This doesn't seem to be handled with the new code (it probably needs to be checked somehow in the plugin now since startExecuteCh handles both starting the span and context management which were separated before).

const field = getField(context, path.slice(0, i))
if (field) {
return field
const fieldCtx = { info, ctx: parentCtx, args }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming this ctx will mean there is a field.ctx.ctx. I'd probably keep the parentCtx name instead.

const path = getPath(info, this.config)

// we need to get the parent span to the field if it exists for correct span parenting
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't parentCtx already the context of the parent field? Why is a search needed if that's the case?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants